背景
6月14日在WWDC 2016开发者大会上,苹果宣布了一个最后期限:2017年1月1日起,所有提交到 App Store 的应用强制开启ATS(App Transport Security)安全功能。启用ATS后,它会屏蔽明文HTTP资源加载,强制App通过HTTPS连接网络服务,通过传输加密保障用户数据安全。
ATS在 iOS 9 中默认开启,但开发者仍然可以选择使用 NSAllowsArbitraryLoads来关闭 ATS,继续通过HTTP连接传输数据。但从 2017 年 1 月 1 日起,这招将行不通了,所有提交到 App Store 的App必须强制开启 ATS,否则将无法通过App Store的审核,影响应用上架。
1月9日更新:苹果宣布暂时延长iOS强制ATS的最后期限,给开发者更多时间做好准备,还没有确认新的截止日期,随时可能再次执行强制ATS。建议开发者停止观望,在时间充裕的情况下,尽快完成HTTPS升级方案。
为什么强制使用HTTPS
简单地说,HTTP是明文协议,通过该协议传输的数据处在被窃听、篡改、冒充这三大风险中,已经是非常不安全的传输协议。HTTPS是加密协议,就是在HTTP的基础上开启一条SSL加密通道,让原本明文“裸奔”的数据,从加密通道中密文传输,保证了数据传输的安全性。
目前,全球互联网正在进行从HTTP到HTTPS的大迁移,苹果一向非常关注用户隐私安全,在执行安全策略方面,态度也是非常强硬,实施强制HTTPS加密势在必行。
苹果ATS安全设置的要求
ATS默认的安全要求:
- 服务器必须支持传输层安全(TLS)协议1.2以上版本;
- 通讯加密套件仅限支持完全正向加密的套件;
- 证书必须使用SHA256或更高的哈希算法签名;以及2048位以上RSA密钥或256位以上ECC密钥。
不满足以上条件,ATS会拒绝连接。
苹果iOS APP配置HTTPS最全方案汇总
- 选择合适的SSL证书
- 服务端配置https
- iOS APP适配HTTPS
- 什么是ATS?
-
在APP服务端部署SSL证书才能实现HTTPS连接,沃通新证书产品已经上线,支持苹果iOS系统和safari浏览器,满足ATS安全设置要求。
企业级开发者推荐使用超安SSL Pre和超真SSL Pre等OV级别以上的SSL证书,新品推广期间申请沃通超真SSL Pre通配型证书可享8折优惠,名额有限先到先得。
特别提示:采用自签名证书(无效证书)实现HTTPS连接,直接访问会报错且极有可能无法通过App store审核,开发者慎用!
-
沃通CA已经更新SSL证书安装指南(2017),适用于iOS App服务端HTTPS证书的配置。
成功在沃通申请证书后,会得到一个有密码的压缩包文件,输入证书密码后解压得到五个文件:for Apache、for IIS、for Ngnix、for Tomcat、for Other Server这几种证书格式文件,可根据所使用的服务器类型,按照安装指南进行配置。
-
(教程来源网络,如有错误欢迎指出)
-
什么是ATS?
ATS是iOS9和OS X ElCapitan的一个新特性,开启该功能后,ATS对使用NSURLConnection, CFURL 或NSURLSession 等 APIs 进行的网络请求默认强制使用HTTPS加密传输,目标是提高Apple操作系统以及应用程序的安全性。
ATS和HTTPS什么关系?
ATS是iOS9以上版本增加的新特性,启用ATS后会屏蔽明文HTTP资源加载,强制App通过HTTPS连接网络服务。此外,ATS对HTTPS连接有要求,不符合要求的连接将被拒绝访问。简单地说,ATS标准有点像PC端浏览器验证机制,可以规范iOS移动端与服务端网络连接的安全性。
是否需要采购额外硬件,才能开启ATS?
不用。银行系统中常用的Web服务器/反向代理服务器,如Apache Web Server、Nginx、HAProxy等均支持ATS所需的安全技术,使用沃通WoSign签发的服务器SSL证书,就符合要求,无需另行采购硬件。对于SSL服务器等硬件,需要和厂商确认是否支持及如何配置。
应用服务器及后台应用是否需要改造?
不用。部署在内网的应用服务器无需进行改造,只要其前方的Web服务器或反向代理经过正确配置,符合ATS要求即可。
如果在2017年1月前未完成ATS相关改造,我的现有应用是否会受到影响?
已经在App Store上线的应用,还可以继续使用。
如果在2017年1月前未完成ATS相关改造,还可以提交新的版本吗?
不可以。在iTunes Connect/App Store审核过程中,会核查ATS支持情况,对于不支持的应用会拒绝上线。
既然可以添加ATS例外,把银行的生产服务器添加进去是否可以?
不可以。任何添加的ATS例外,都会触发额外的审核,需要附上合理的理由,否则会被拒绝上线。